package chapter08

/**
 * Created with IntelliJ IDEA.
 * ClassName: Test03_Extend
 * Package: chapter08
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 *          Date: 2023-06-29
 *          Time: 21:50
 */

object Test03_Extend {

  def main(args: Array[String]): Unit = {
    //匹配元组 扩展
    //1.在变量声明时候匹配
    //元组对应赋值
    val (x, y) = (10, "hello")
    println(s"x:$x ,y:$y")

    val List(f, s, _*) = List(12, 1, 2, 33, 431, 32)

    println(f) //12
    println(s) //1
    //如果元素和变量个数不对应 不能使用变量 下划线表示_*
    //这种方式无法输出剩余数据的集合
    //使用双冒号 输出剩余数据的集合

    val fs :: ss :: rs = List(12, 34, 5, 78)
    println(fs) //12
    println(ss) //34
    println(rs) //List(5, 78)


    //2.for推导式中进行模式匹配
    //元组类型的list
    val list:List[(String,Int)] = List(("a",12),("b",35),("c",27),("a",11))

    //2.1原本的遍历方式
    for (elem <- list){
      //只元组中的第一个 和第二个
      println(elem._1 + " " + elem._2)
    }

    //2.2 将List的元素直接定义为元组
    for ((word,cont) <- list){
      println(word + " " + cont)
    }

    //2.3可以不考虑某个位置的变量，只遍历key或者val
    //单纯的输出key
    for ((word,_) <- list){
      println(word)
    }

    //2.4指定某个位置的值是多少 找到key为a输出value值
    for (("a",count) <- list){
      println(count)
    }

  }

}
